package TenkindsOfAlgorithm.divideAndConquer;

public class HanoiTower {
    public static void main(String[] args) {
        hanoiTower(2,'a','b','c');
    }

    /**
     * 汉诺塔就三步  打开冰箱 塞入大象 关闭冰箱
     * 很关键到一点就是去弄懂 "起始","辅助","目标"三个位置到关系
     * && 在将n-1个盘移动到到都是除自己以外到柱子
     * @param num  汉诺塔要移动盘子到个数
     * @param begin 起始位置
     * @param temp   辅助位置
     * @param end    目标位置
     */
    public static void hanoiTower(int num,char begin,char temp,char end){
        if (num==1){
            System.out.println("第一个盘从"+begin+"->"+end);
        }else {
            // 分 把头上个盘从开始位置移动到辅助位置
            hanoiTower(num-1,begin,end,temp);
            // 直接第n个盘从开始位置移动到目标位置
            System.out.println("第"+num+"个盘从"+begin+"->"+end);
            // 分 把头上个盘从辅助位置移动到目标位置
            hanoiTower(num-1,temp,begin,end);
        }
    }
}
